﻿<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Backup extends Controller_Template {

	public $template = 'restrito';

	public $usuario;
	
	public function action_index()
	{
		$view = new View('backup/index');
		$this->template->body = $view;
	}
	
	public function action_criar()
	{
		DbBackup::factory(APPPATH.'backup')->mysqlselect();
		
		if(isset($_REQUEST['cli']))
		{
			$this->auto_render = FALSE;
			return;
		}
		
		$view = new View('backup/criar');
		$this->template->body = $view;
	}
	
	public function action_download()
	{
		$this->auto_render = FALSE;
		
		$filename = $this->request->param('id'). '.' .$this->request->param('format');
		
		$this->response->send_file(APPPATH.'backup/'.$filename);
	}
	
	public function action_apagar()
	{
		$filename = $this->request->param('id'). '.' .$this->request->param('format');
		
		unlink(APPPATH.'backup/'.$filename);
		
		$this->request->redirect('backup/index');
	}
	
	public function before()
	{
		parent::before();
		
		if(isset($_REQUEST['cli']))
		{
			$this->usuario = ORM::factory('usuario')
				->where('usuario', '=', $_REQUEST['cli'])
				->find()
				->as_array();
			
			$this->uri_restrito();
		}
		elseif(Session::instance()->get('usuario'))
		{
			$this->usuario = unserialize(Session::instance()->get('usuario'));
			
			$this->uri_restrito();
			
			$this->template->usuario = $this->usuario;
			
		}
		else {
			Flash::message('error', 'Você permaneceu muito tempo inativo. Por favor, conecte novamente!');
			$this->request->redirect('welcome/index');
			exit();
		}
	}
	
	protected function uri_restrito()
	{
		//Pega o controlador e a acao requisitada
		$controller = $this->request->controller();
		$action = $this->request->action();
		//Busca a permissao
		$permissao = ORM::factory('permissao')
			->where('controlador', '=', $controller)
			->and_where('acao', '=', $action)
			->find();
		
		//Permissão existe, verifica se usuário tem permissao
		if($permissao->loaded())
		{
			$usuario = ORM::factory('usuario', $this->usuario['id']);
			if(! $usuario->has('permissoes', $permissao))
			{
				Flash::message('error', 'Você não tem permissão para acessar esse recurso: '.$permissao->descricao);
				$this->request->redirect('calendario/index');
				exit();
			}
		}
	}
	
} // End Backup
